import { getToken, removeToken, setToken } from "../utils/auth"

const baseUrl='http://localhost:8080'

export const get=(uri:string)=>{
    wx.showLoading({
        title: '加载中'
    })
    return new Promise((resolve,reject)=>{
        wx.request({
            url: baseUrl+uri,
            method: 'GET',
            success: (res)=>{    //成功的方法
                resolve(res.data)  //把数据传过去
            },
            fail: reject,  //失败的方法
            complete: ()=>{  //失败和成功都执行
                wx.hideLoading({  //隐藏加载效果
                })
            }
        })
    })
}

export const post=(uri:string,data:object)=>{
    wx.showLoading({
        title: '加载中'
    })
    return new Promise((resolve,reject)=>{
        wx.request({
            data,
            url: baseUrl+uri,
            method: 'POST',
            success: (res)=>{    //成功的方法
                if(res.statusCode===401){ //如果返回是401状态就清token
                    removeToken()
                    const currentPages=getCurrentPages()   //获取当前页面路径对象
                    const currentRoute=currentPages[currentPages.length-1].route  //获取当前页面
                    if( currentRoute!=='pages/login/index')  //当前页面不是login时
                    {
                        wx.navigateTo({
                            url:'/pages/login/index'
                        })
                    }
                    wx.showToast({
                        title:'用户未登录',
                        icon:'error'
                    })
                }
                _handlerToken(res.header)
                resolve(res.data)  //把数据传过去
            },
            fail: reject,  //失败的方法
            complete: ()=>{  //失败和成功都执行
                wx.hideLoading({  //隐藏加载效果
                })
            }
        })
    })
}

const _handlerToken=(header: any)=>{
    const token=header['Authorization']||null
    if(token&&getToken()!==token){  //如果token存在并且与header里面的不一致就重写token
        setToken(token)
        wx.navigateBack() //当有token之后返回首页
    }
}